/**
 * 工具函数集合
 * 
 * 提供各种常用的工具函数，用于数据类型判断、数据处理等
 */

/**
 * 判断数据类型
 * @param {any} data - 需要判断的数据
 * @param {string} type - 期望的数据类型 (如: 'array', 'object', 'string', 'number' 等)
 * @returns {boolean} 返回是否为指定类型
 * 
 * 示例：
 * DataType([1,2,3], 'array') => true
 * DataType('hello', 'string') => true
 * DataType({}, 'object') => true
 */
export function DataType(data, type) {
  // 获取数据的实际类型
  const dataType = Object.prototype.toString.call(data).slice(8, -1).toLowerCase();
  
  // 返回类型是否匹配
  return dataType === type.toLowerCase();
}

/**
 * 判断数据是否为数组
 * @param {any} data - 需要判断的数据
 * @returns {boolean} 返回是否为数组
 */
export function isArray(data) {
  return Array.isArray(data);
}

/**
 * 判断数据是否为对象
 * @param {any} data - 需要判断的数据
 * @returns {boolean} 返回是否为对象
 */
export function isObject(data) {
  return DataType(data, 'object') && !isArray(data) && data !== null;
}

/**
 * 判断数据是否为字符串
 * @param {any} data - 需要判断的数据
 * @returns {boolean} 返回是否为字符串
 */
export function isString(data) {
  return DataType(data, 'string');
}

/**
 * 判断数据是否为数字
 * @param {any} data - 需要判断的数据
 * @returns {boolean} 返回是否为数字
 */
export function isNumber(data) {
  return DataType(data, 'number') && !isNaN(data);
}

